widget: Only check display debug flags if the global ones are set
authorTimm Bäder <mail@baedert.org>
Sat, 14 Oct 2017 05:37:06 +0000 (07:37 +0200)
committerTimm Bäder <mail@baedert.org>
Sat, 14 Oct 2017 05:37:06 +0000 (07:37 +0200)
The gtk_widget_get_display call in this if statement is showing up in
profiles. It ends up walking up the hierarchy to the toplevel to get its
GdkScreen, etc. so it is relatively costly. Avoid that call in most
cases by first checking if the RESIZE debugging is enabled for any of
the displays and only then checking if it is enabled for the widget's
display.

gtk/gtkwidget.c

index 1968ce4ce48224d585d796b5832e13d6fb57879c..10b7836bc68f31326b0d3a78ad240a95a6b3f53c 100644 (file)
@@ -5358,7 +5358,8 @@ gtk_widget_size_allocate (GtkWidget           *widget,
     }
 
 #ifdef G_ENABLE_DEBUG
-  if (GTK_DISPLAY_DEBUG_CHECK (gtk_widget_get_display (widget), RESIZE))
+  if (GTK_DEBUG_CHECK (RESIZE) &&
+      GTK_DISPLAY_DEBUG_CHECK (gtk_widget_get_display (widget), RESIZE))
     {
       priv->highlight_resize = TRUE;
       gtk_widget_queue_draw (widget);